package com.atqh.srrt.chicken.controller.BlogController;


import com.atqh.srrt.chicken.controller.BaseController;
import com.atqh.srrt.chicken.utils.FileUtil;
import com.atqh.srrt.chicken.utils.QiniuUtils;
import com.atqh.srrt.chicken.utils.Result;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

@RestController
@RequestMapping("upload")
@CrossOrigin
public class UploadController  extends BaseController {

    @Autowired
    private QiniuUtils qiniuUtils;

    //加水印
    @Value(value = "${qiniu.accessKey}")
    private String QINIU_URL_Default_BgImg;

    @Value("${virtualPath}")
    private String virtualPath;

    @PostMapping
    public Result upload(@RequestParam("image") MultipartFile file) {
        //原始文件名称 比如 aa.png
        String originalFilename = file.getOriginalFilename();
        //唯一的文件名称
        String fileName = UUID.randomUUID().toString() + "." + StringUtils.substringAfterLast(originalFilename, ".");
        //上传文件 上传到哪呢？ 七牛云 云服务器
        // 降低 我们自身应用服务器的带宽消耗


        boolean upload = qiniuUtils.upload(file, fileName);
        if (upload) {
            return Result.success(QiniuUtils.url + fileName + "?" + QINIU_URL_Default_BgImg);
        }
        return Result.Fail(20001, "上传失败");
    }

    //post
    @RequestMapping("/file")
    public void file(MultipartFile file, HttpServletResponse resp) throws Exception {
        //文件名
        String fileName = file.getOriginalFilename();
        FileUtil.createFile(virtualPath); //写代码创建文件夹
        String newFileName = generateFileName(fileName);
        file.transferTo(new File(virtualPath +"\\"+ newFileName));
        //输出响应  C:/create没写 只写了后半段
        outRespJson("/exam/" + newFileName, resp);
    }
    /**
    *@作者：大叔azhe
    *@api：为上传图片进行重命名的方法
    *@param：filename 需要重命名的文件名
    *@返回：重命名后的文件名
    *@创建时间：13:14 2024/3/31
    */
    public static String generateFileName(String filename) {
        // 获取当前时间
        LocalDateTime currentTime = LocalDateTime.now();

        // 定义日期时间格式化器，用于将时间格式化为指定格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd+HH^mm^ss");

        // 格式化当前时间为字符串，并添加到文件名中
        String fileName = currentTime.format(formatter)+"_" + filename; // 可根据实际需求修改文件扩展名

        return fileName;
    }

}
